package gsw.demo.mvp.demo.dagger.module;

import javax.inject.Named;
import javax.inject.Singleton;

import dagger.Module;
import dagger.Provides;
import gsw.demo.mvp.demo.dagger.bean.UserA;

/**
 * Module：用来提供对象
 *
 * @Module 用来声明Module。入参includes，用来引入其他Module，从而使用其他Module的功能
 */
@Module
public class UserAModule {

    /**
     * 用于给注册的对象提供new对象
     *
     * @Provides 标识这是提供对象的方法
     * @Singleton 表示在注入的类中生成单例对象。必须与Component的Scope相同。
     * @Named 指定全局对象的Named。配合@Singleton使用，用来生成多个对象
     */
    @Singleton
    @Provides
    @Named("user1")
    public UserA provideUser() {
        return new UserA("1", "jett");
    }

    @Singleton
    @Provides
    @Named("user2")
    public UserA provideUser2() {
        return new UserA("2", "jett");
    }


}
